package cn.edu.gzhmt.user.dao;

import java.util.List;

import cn.edu.gzhmt.user.domain.User;

/**
 * User持久层
 * @author azhuo
 *
 */
public interface IUserDao {

	/**
	 * 添加用户
	 * @param user
	 */
	void addUser(User user);

	/**
	 * 根据激活码查询用户
	 * @param stateCode
	 * @return
	 */
	User findUserByStateCode(String stateCode);

	/**
	 * 根据用户id激活用户
	 * @param uid
	 * @param state
	 */
	void updateState(String uid, boolean state);

	/**
	 * 根据用户名查询用户
	 * @param username
	 * @return
	 */
	User findUserByUsername(String username);

	/**
	 * 根据email查询客户
	 * @param email
	 * @return
	 */
	User findUserByEmail(String email);

	/**
	 * 根据用户id，字段名称，字段值来更新用户信息
	 * @param uid
	 * @param column
	 * @param value
	 */
	void update(String uid, String column, String value);

	/**
	 * 根据用户id查询用户
	 * @param uid
	 * @return
	 */
	User findUserById(String uid);

	/**
	 * 查询所有用户
	 * @return
	 */
	List<User> findAll();

	/**
	 * 查询所有管理员用户
	 * @return
	 */
	List<User> findAllAdmin();

	/**
	 * 使用模糊查询用户
	 * @param username
	 * @return
	 */
	List<User> findUserByUsernameLike(String username);

	/**
	 * 用户名查询管理员用户
	 * @param username
	 * @return
	 */
	List<User> findAdminUserByUsernameLike(String username);

}
